package com.yida.gwj.common.service;

import com.yida.gwj.common.domain.GwjBaseOwner;
import com.yida.gwj.common.domain.dto.GwjBaseOwnerHouseListDTO;
import com.yida.gwj.common.domain.request.GwjBaseOwnerUpdateRequest;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 基础数据（业主）Service接口
 *
 * @author lqq
 * @date 2022-11-14
 */
public interface IGwjBaseOwnerService {

    /**
     * 查询基础数据（业主）列表
     *
     * @param owner 基础数据（业主）
     * @return 基础数据（业主）集合
     */
    List<GwjBaseOwner> selectGwjBaseOwnerList(GwjBaseOwner owner);

    /**
     * 获取业务业主集合
     *
     * @param houseCodes 房屋标识码集合
     * @param areaId     地区ID
     * @return /
     */
    List<GwjBaseOwner> selectGwjBaseListByGwjBaseHouseCodes(String[] houseCodes, Long areaId);

    /**
     * 查询基础数据（业主）
     *
     * @param id 基础数据（业主）主键
     * @return 基础数据（业主）
     */
    GwjBaseOwner selectGwjBaseOwnerByGwjBaseOwnerId(Long id);

    /**
     * 查询基础数据（业主）
     *
     * @param houseCode 房屋标识码
     * @param areaId    地区ID
     */
    GwjBaseOwner selectGwjBaseOwnerByAreaIdAndHouseCode(String houseCode, Long areaId);

    /**
     * 新增基础数据（业主）
     *
     * @param owner 基础数据（业主）
     * @return 结果
     */
    int insertGwjBaseOwner(GwjBaseOwner owner);

    /**
     * 批量新增基础数据（业主）
     *
     * @param owners 基础数据（业主）
     * @return 结果
     */
    int insertBatchGwjBaseOwner(List<GwjBaseOwner> owners);

    /**
     * 修改基础数据（业主）
     *
     * @param owner 基础数据（业主）
     * @return 结果
     */
    int updateGwjBaseOwner(GwjBaseOwner owner);

    /**
     * 修改基础数据（业主）
     *
     * @param gwjBaseOwners 基础数据（业主）
     * @return 结果
     */
    int updateBatchGwjBaseOwner(List<GwjBaseOwner> gwjBaseOwners);

    /**
     * 批量删除基础数据（业主）
     *
     * @param ids 需要删除的基础数据（业主）主键集合
     * @return 结果
     */
    int deleteGwjBaseOwnerByGwjBaseOwnerIds(Long[] ids);

    /**
     * 删除基础数据（业主）信息
     *
     * @param id 基础数据（业主）主键
     * @return 结果
     */
    int deleteGwjBaseOwnerByGwjBaseOwnerId(Long id);

    /*************************新功能保留区************************************/
    /**
     * 新增基础数据（业主）
     *
     * @param owners 业主集合
     * @return 结果
     */
    public int insertImportGwjBaseOwner(List<GwjBaseOwner> owners);

    /**
     * 修改基础数据（业主）
     *
     * @param owners 业主集合
     * @return 结果
     */
    public int updateImportGwjBaseOwner(List<GwjBaseOwner> owners);

    /**
     * 删除基础数据（业主）
     *
     * @param houseCodes 房屋标识码
     * @return 结果
     */
    public int deleteGwjBaseOwnerByHouseCodes(String[] houseCodes);


    /*************************新功能保留区************************************/

    /**
     * 修改基础数据（业主）
     *
     * @param request 基础数据（业主）
     * @return 结果
     */
    int updateGwjBaseOwnerByHouseId(GwjBaseOwnerUpdateRequest request);

    /**
     * 导入业主信息
     *
     * @param file        业主文件
     * @param communityId 小区ID
     * @return /
     * @throws Exception /
     */
    String importGwjBaseOwner(MultipartFile file, Long communityId) throws Exception;

    /**
     * 查询业主房屋信息列表
     *
     * @param gwjBaseOwner 业主信息
     * @return /
     */
    List<GwjBaseOwnerHouseListDTO> selectGwjOwnerHouseList(GwjBaseOwner gwjBaseOwner);
}
